"use strict";
const crypto = require("crypto");
module.exports = (app) => {
  const { STRING, INTEGER, DATE, ENUM } = app.Sequelize;
  // 配置（重要：一定要配置详细，一定要！！！）
  const Shop = app.model.define("shop", {
    id: {
      type: INTEGER(30).UNSIGNED,
      primaryKey: true,
      autoIncrement: true
    },
    title: {
      type: STRING(200),
      allowNull: false,
      comment: '商家名称',
    },
    logo: {
      type: STRING(200),
      allowNull: false,
      comment: '商家封面图',
    },
    banner: {
      type: STRING(1000),
      allowNull: false,
      comment: '商家轮播图',
    },
  
    lat: {
      type: STRING(30),
      allowNull: false,
      comment: '经度',
    },
    log: {
      type: STRING(30),
      allowNull: false,
      comment: '纬度',
    },
    class_id: {
      type: INTEGER(30).UNSIGNED,
      allowNull: false,
      comment: '分类id',
      //  定义外键（重要）
      references: {
        model: 'class', // 对应表名称（数据表名称）
        key: 'id' // 对应表的主键
      },
      onUpdate: 'restrict', // 更新时操作
      onDelete: 'cascade'  // 删除时操作
    },
    city_id: {
      type: INTEGER(30).UNSIGNED,
      allowNull: false,
      comment: '城市id',
      //  定义外键（重要）
      references: {
        model: 'city', // 对应表名称（数据表名称）
        key: 'id' // 对应表的主键
      },
      onUpdate: 'restrict', // 更新时操作
      onDelete: 'cascade'  // 删除时操作
    },
    popularity: {
      type: INTEGER(30),
      allowNull: false,
      comment: '人气',
    },
    equipment: {
      type: STRING(200),
      allowNull: false,
      comment: '设备',
    },
    address: {
      type: STRING(200),
      allowNull: false,
      comment: '地址',
    },
    address_detaill: {
      type: STRING(200),
      allowNull: false,
      comment: '详细地址',
    },
    business: {
      type: STRING(200),
      allowNull: false,
      comment: '营业时间',
    },
    phone: {
      type: STRING(20),
      allowNull: false,
      comment: '联系电话',
    },
    detail: {
      type: STRING(1000),
      allowNull: false,
      comment: '商家简介',
    },
    detail_images: {
      type: STRING(1000),
      allowNull: false,
      comment: '商家图片',
    },
    is_recommend: {
      type: ENUM,
      values: ['0', '1',],
      allowNull: false,
      defaultValue: '0',
      comment: '推荐 0不 1推荐 '
    },
    sort: {
      type: INTEGER(30),
      allowNull: false,
      defaultValue: '1',
      comment: '排序 越小越前',
    },
    status: {
      type: ENUM,
      values: ['0', '1',],
      allowNull: false,
      defaultValue: '0',
      comment: '状态 0禁用 1启用 '
    },
    created_at: DATE,
    updated_at: DATE,
    
  });

  // 定义关联关系
  Shop.associate = function (model) {
    Shop.belongsTo(app.model.Class);
    Shop.belongsTo(app.model.City);
    Shop.hasMany(app.model.Coupons, {
      foreignKey:'shop_id'
    });
    Shop.hasOne(app.model.ShopConfig, {
      foreignKey: 'shop_id',
      as:'shop_config'
    });
  };
  return Shop;
};
